package com.smile.model.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@ToString
@TableName("feisuan_planar_airline")
public class FeisuanPlanarAirline implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId("id")
    private Long id;


    /**
     * 航线名称
     */
    @TableField("airline_name")
    private String airlineName;

    /**
     * 航线类型 0点状 1 面状
     */
    @TableField("airline_type")
    private Integer airlineType;

    /**
     * 面积
     */
    @NotNull(message = "面积不能为空")
    @TableField("areas")
    private Integer areas;

    @TableField("user_id")
    private Long userId;

    /**
     * 预计执行时间
     */
    @NotBlank(message = "预计执行时间不能为空")
    @TableField("execute_time")
    private String executeTime;

    /**
     * 航线总长度
     */
    @NotNull(message = "航线总长度不能为空")
    @TableField("total_distance")
    private Integer totalDistance;

    /**
     * 总照片数
     */
    @NotNull(message = "总照片数不能为空")
    @TableField("total_photos")
    private Integer totalPhotos;


    /**
     * 参考起飞点
     */
//    @NotBlank(message = "参考起飞点不能为空")
    @TableField("take_off_ref_point")
    private String takeOffRefPoint;


    //    @NotBlank(message = "是否支持红外摄像头参数不能为空")

    @TableField("ir_type_support")
    private Integer irTypeSupport;

    //    @NotBlank(message = "是否支持广角摄像头")
    @TableField("wide_type_support")
    private Integer wideTypeSupport;

    /**
     * 采集方式 0正射采集 1. 倾斜采集
     */
    @TableField("collect_type")
    private Integer collectType;

    /**
     * 广角gsd
     */
    @TableField(exist = false)
    private Integer wideGsd;

    /**
     * 倾斜gsd
     */
    @TableField(exist = false)
    private Integer inclineGsd;

    /**
     * 航线高度模式
     * <p>
     * 0 海拔高度
     * 1 相对起飞点高度
     * 2 相对地形高度
     */
    @TableField("height_mode")
    private Integer heightMode;

    /**
     * 航线高度
     */
    @TableField("height")
    private BigDecimal height;

    /**
     * 安全起飞高度
     */
    @TableField("take_off_security_height")
    private BigDecimal takeOffSecurityHeight;

    /**
     * 云台俯仰角度
     */
    @TableField("gimbal_pitch_angle")
    private Integer gimbalPitchAngle;

    /**
     * 全局航线速度
     */
    @TableField("auto_flight_speed")
    private BigDecimal autoFlightSpeed;

//    private Integer


    /**
     * 0自动返航
     * 1返回航线到起始点悬停
     * 2退出航线模式
     * 3原地降落
     */
    @TableField("finish_action")
    private Integer finishAction;

    /**
     * 是否开启高程优化 0不开启 1 开启
     */
    @TableField("elevation_optimize_enable")
    private Integer elevationOptimizeEnable;


//    private List<CoordinatePointReq> addCoordinatePoints;

    @TableField("global_shoot_height")
    private BigDecimal globalShootHeight;

    /**
     * 测区外扩距离
     */
    @TableField("margin")
    private Integer margin;

    /**
     * 航线方向
     */
    @TableField("direction")
    private Integer direction;

    /**
     * 航向重叠率
     */
    @TableField("overlap_h")
    private Integer overlapH;

    /**
     * 旁向重叠率
     */
    @TableField("overlap_w")
    private Integer overlapW;

    /**
     * 偏航角度
     */
    @TableField("waypoint_heading_angle")
    private BigDecimal waypointHeadingAngle;

    /**
     * 0 沿航线方向
     * 1 手动控制
     */
    @TableField("waypoint_heading_mode")
    private Integer waypointHeadingMode;

    /**
     * 0 等时间拍照
     * 1 等距离拍照
     */
    @TableField("shoot_type")
    private Integer shootType;

    @TableField("global_transitional_speed")
    private BigDecimal globalTransitionalSpeed;

    @TableField("create_time")
    private LocalDateTime createTime;

    @TableField("airline_url")
    private String airlineUrl;

    @TableField("e_tag")
    private String eTag;

}
